package com.yima.baseproj.config.redis.lock;

import java.util.concurrent.TimeUnit;

/**
 * 分布式锁模板类
 * @Author 一码
 * @createDate 2023/4/1 09:00
 * @contact 1424529270@qq.com
 */
public interface DistributedLockTemplate<T> {

    /**
     * 执行方法
     *
     * @param lockId   锁id(对应业务唯一ID)
     * @param timeout  最大等待获取锁时间
     * @param unit     等待时间单位
     * @param callback 回调方法
     * @return
     */
    T execute(String lockId, Integer timeout, TimeUnit unit, Callback<T> callback);
}
